

#ifndef UD_DBRAY_H
#define UD_DBRAY_H 1

#include "zdbmain.h"
#include "zdbcurve.h"

#pragma pack(push, 8)

class UcGePoint3d;
class UcGeVector3d;

class UcDbRay: public UcDbCurve
{
public:
    UcDbRay();
    ~UcDbRay();
    UCDB_DECLARE_MEMBERS(UcDbRay);
    DBCURVE_METHODS

    Ucad::ErrorStatus getOffsetCurvesGivenPlaneNormal(
        const UcGeVector3d& normal, double offsetDist,
        UcDbVoidPtrArray& offsetCurves) const;
    
    UcGePoint3d  basePoint() const;
    void         setBasePoint(const UcGePoint3d& pt); 

    UcGeVector3d unitDir() const;
    void         setUnitDir(const UcGeVector3d& vec);

    virtual Ucad::ErrorStatus getClassID(CLSID* pClsid) const;
};

inline ZSoft::Boolean UcDbRay::isClosed() const      
{
    return ZSoft::kFalse;
}

inline ZSoft::Boolean UcDbRay::isPeriodic() const      
{
    return ZSoft::kFalse;
}

inline ZSoft::Boolean UcDbRay::isPlanar() const
{
    return ZSoft::kTrue;
}

inline Ucad::ErrorStatus UcDbRay::getStartParam(double& startParam) const
{
    startParam = 0.0;
    return Ucad::eOk;
}

inline Ucad::ErrorStatus UcDbRay::getEndParam(double& ) const
{
    
    return Ucad::eNotApplicable;
}

inline Ucad::ErrorStatus UcDbRay::getEndPoint(UcGePoint3d& ) const 
{
    return Ucad::eNotApplicable;
}

inline Ucad::ErrorStatus UcDbRay::getSpline(UcDbSpline*& ) const 
{
    return Ucad::eNotApplicable;
}

inline Ucad::ErrorStatus UcDbRay::getArea(double& ) const 
{
    return Ucad::eNotApplicable;
}

#pragma pack(pop)

#endif
